/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model.dominio;

import java.util.Calendar;
import java.util.List;
import model.dao.DaoBase;

/**
 *
 * @author Daniel
 * Classe responsável por controlar a Sessão dos Usuários.
 */
public class SessaoUsuario {

    private static Usuario usuario = null;

    /**
     * Método de início de Sessão, que dá permissão para uso das funcionalidades do Sistema.
     * @param usuario 
     * Para controle do usuário e suas permissões.
     */
    public static void iniciaSessao(Usuario usuario) {
        SessaoUsuario.usuario = usuario;
        Logg logg = new Logg();
        logg.setCodigo_objeto(usuario.getCodigo());
        logg.setAcao(new AcaoSistema(1));
        logg.setData_hora(Calendar.getInstance());
        logg.setUsuario(usuario);
        new DaoBase().salvar(logg);
    }

    /**
     * Método para término de Sessão, que desabilita o uso das funcionalidades do Sistema.
     */
    public static void finalizaSessao() {
        if (SessaoUsuario.usuario != null) {
            Logg logg = new Logg();
            logg.setCodigo_objeto(usuario.getCodigo());
            logg.setAcao(new AcaoSistema(2));
            logg.setData_hora(Calendar.getInstance());
            logg.setUsuario(usuario);
            new DaoBase().salvar(logg);
            SessaoUsuario.usuario = null;
        }
    }

    /**
     * Método para determinar que usuário está logado, possibilitando saber suas permissões.
     * @return usuario
     * Retorno do usuário que está logado na Sessão.
     */
    public static Usuario getUsuarioLogado() {
        return SessaoUsuario.usuario;
    }

    /**
     * Método que verifica as Permissões da Sessão do Usuário logado.
     * @param acao
     * Cujo valor é o cadastrado no banco de dados.
     * @return true ou false
     * Valor atribuído de acordo com a permissão do Usuário para realizar uma ação.
     */
    public static boolean verificaPermissao(int acao) {
        List<AcaoSistema> permissoes = usuario.getPerfil().getPermissoes();
        if (permissoes.contains(new AcaoSistema(acao))) {
            return true;
        } else {
            return false;
        }

    }
}
